import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEDataSet } from '../ds/ipsdedata-set';
import { IPSDEReportItem } from './ipsdereport-item';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';
import { IPSSysUniRes } from '../../security/ipssys-uni-res';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEReport
 */
export interface IPSDEReport extends IPSDataEntityObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 性能优化预警时长（ms）
   * @type {number}
   * @default -1
   */
  pOTime: number;

  /**
   * 实体数据集对象
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 实体数据集对象
   *
   * @type {IPSDEDataSet}
   */
  get psDEDataSet(): IPSDEDataSet | null;

  /**
   * 实体数据集对象（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSetMust(): IPSDEDataSet;

  /**
   * 实体数据集对象2
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet2(): IPSDEDataSet | null;

  /**
   * 实体数据集对象2
   *
   * @type {IPSDEDataSet}
   */
  get psDEDataSet2(): IPSDEDataSet | null;

  /**
   * 实体数据集对象2（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet2Must(): IPSDEDataSet;

  /**
   * 实体数据集对象3
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet3(): IPSDEDataSet | null;

  /**
   * 实体数据集对象3
   *
   * @type {IPSDEDataSet}
   */
  get psDEDataSet3(): IPSDEDataSet | null;

  /**
   * 实体数据集对象3（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet3Must(): IPSDEDataSet;

  /**
   * 实体数据集对象4
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet4(): IPSDEDataSet | null;

  /**
   * 实体数据集对象4
   *
   * @type {IPSDEDataSet}
   */
  get psDEDataSet4(): IPSDEDataSet | null;

  /**
   * 实体数据集对象4（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet4Must(): IPSDEDataSet;

  /**
   * 报表项集合
   *
   * @type {IPSDEReportItem[]}
   */
  getPSDEReportItems(): IPSDEReportItem[] | null;

  /**
   * 报表项集合
   *
   * @type {IPSDEReportItem[]}
   */
  get psDEReportItems(): IPSDEReportItem[] | null;

  findPSDEReportItem(objKey: any): IPSDEReportItem | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 权限统一资源对象
   *
   * @type {IPSSysUniRes}
   */
  getPSSysUniRes(): IPSSysUniRes | null;

  /**
   * 权限统一资源对象
   *
   * @type {IPSSysUniRes}
   */
  get psSysUniRes(): IPSSysUniRes | null;

  /**
   * 权限统一资源对象（必须存在）
   *
   * @type {IPSSysUniRes}
   */
  getPSSysUniResMust(): IPSSysUniRes;

  /**
   * 报表路径
   * @type {string}
   */
  reportFile: string;

  /**
   * 报表模型
   * @type {string}
   */
  reportModel: string;

  /**
   * 报表类型
   * @type {string}
   */
  reportType: string;

  /**
   * 系统统一资源代码
   * @type {string}
   */
  sysUniResCode: string;

  /**
   * 支持日志
   * @type {boolean}
   * @default false
   */
  enableLog: boolean;

  /**
   * 多页报表
   * @type {boolean}
   * @default false
   */
  multiPage: boolean;
}
